$(function () {
    //初始化专业搜索条件
    $.initSubject({
        element:'subject-box',
        confirmBtn:false,
        removeBtn: false,
        style:false,
        notMultiple:true,
        classText:'form-control',
        width:100,
        selectCallback:function(subjectIds){
            $("#subjectIds").val(subjectIds);
        }
    });
    listMould(1);
    $("body").on('click', '#btn1,#btn2', function () {
        listMould(1);
    }).on('click', '#deleteBatch', function () {//批量删除
       var ids = getIds();
        if (ids==null) {
            icModale(0, '没有选择要删除的模块');
            return false;
        }
        icModale(2, '确认删除选中的模块？', 3, function () {
            updateMouldStatus(ids,4);
        });
    }).on('click', '#publishBatch', function () {//批量发布
       var ids = getIds();
        if (ids==null) {
            icModale(0, '没有选择要发布的模块');
            return false;
        }
        icModale(2, '确认发布选中的模块？', 3, function () {
            updateMouldStatus(ids,2);
        });
    }).on('click', '#finishBatch', function () {//批量完成
       var ids = getIds();
        if (ids==null) {
            icModale(0, '没有选择要完成的模块');
            return false;
        }
        icModale(2, '确认要设置完成选中的模块？', 3, function () {
            updateMouldFinish(ids);
        });
    }).on('click', '#hideBatch', function () {//批量隐藏
       var ids = getIds();
        if (ids==null) {
            icModale(0, '没有选择要隐藏的模块');
            return false;
        }
        icModale(2, '确认要隐藏选中的模块？', 3, function () {
            updateMouldStatus(ids,3);
        });
    }).on('click', '#historyBatch', function () {//批量恢复
       var ids = getIds();
        if (ids==null) {
            icModale(0, '没有选择要恢复的模块');
            return false;
        }
        icModale(2, '确认要恢复选中的模块？', 3, function () {
            updateMouldStatus(ids,5);
        });
    }).on('click', '#mould-list-context i.fa-gavel', function () { //完成模块
        var id = $(this).parent().data('id');
        icModale(2, '确认要设置该模块完成？', 3, function () {
            updateMouldFinish(id);
        });
    }).on('click', '#mould-list-context i.fa-arrow-up', function () { // 发布模块
        var id = $(this).parent().data('id');
        icModale(2, '确认要发布该模块完成？', 3, function () {
            updateMouldStatus(id,2);
        });
    }).on('click', '#mould-list-context i.fa-ban', function () { // 隐藏模块
        var id = $(this).parent().data('id');
        icModale(2, '确认要隐藏该模块完成？', 3, function () {
            updateMouldStatus(id,3);
        });
    }).on('click', '#mould-list-context i.fa-history', function () { // 恢复模块
        var id = $(this).parent().data('id');
        icModale(2, '确认要恢复该模块？', 3, function () {
            updateMouldStatus(id,5);
        });
    }).on('click', '#mould-list-context i.fa-trash', function () {//删除模块
        var id = $(this).parent().data('id');
        icModale(2, '确认要删除该模块完成？', 3, function () {
            updateMouldStatus(id,4);
        });
    }).on('click', '#mould-list-context i.fa-eye', function () {//查看模块
        var mouldId = $(this).parent().data('id');
        parent.layer.open({
            area: ['800px', '500px'],
            btn: ['进入修改状态', '取消'],
            content: baseloaction + '/admin/course/mould/showMouldInfo?id=' + mouldId,
            maxmin: true,
            shade: [0.3, '#000'],
            shadeClose: false,
            title: '查看模块',
            type: 2,
            yes: function (index) {
                window.location = baseloaction + '/admin/course/mould/initUpdate?id=' + mouldId;
                parent.layer.close(index);
            }
        });
    });
    //加载模块页面数据
    function listMould(pageNo) {
        var params = $("#search-form").serializeJSON();
        params = JSON.stringify(params);
        var obj = {
            url: baseloaction + '/admin/course/mould/ajaxFindMouldList',//请求URL
            contextId: 'mould-list-context',//响应内容页面设置内容ID
            params: params,//请求参数
            pageNo: pageNo,//页码
            pageCall: listMould, //分页回调加载数据(点击上下页时调用,该方法也在加载页面完成时调用)
            selectAllId: 'all-mould', //全选框ID
            callback: function () {//数据加载完成回调
                $("#count").html('(共'+total+'个模块)');
            }
        };
        ajaxGetListData(obj);
    }

    /**
     * 修改模块状态
     * @param ids 模块ID串
     * @param status 状态，1未发布，2已发布，3隐藏，4删除，5恢复
     */
    function updateMouldStatus(ids,status) {
        $.ajax({
            url:baseloaction +'/admin/course/mould/updateMouldStatus',
            type:'post',
            dataType:'json',
            data:{'ids':ids,'status':status},
            success:function (result) {
                if(result.success==false){
                    icModale(0, result.message);
                }else{
                    var arr = (ids+'').split(",");
                    $.each(arr,function (index,id) {
                        if($.trim(id)!=''){
                            var statusEm = $("#status-"+id);
                            var statusAction = $("#status-action-"+id);
                            if(status ==2){//发布
                                statusEm.attr('data-status',2);
                                statusEm.html('<span class="label label-info">已发布</span>');
                                statusAction.html('<i class="fa fa-ban"></i>');
                                statusAction.attr('data-original-title','隐藏');
                            }
                            if(status==5){//恢复
                                var _status = statusEm.data('status');
                                if(parseInt(_status)!=1){
                                    statusEm.attr('data-status',2);
                                    statusEm.html('<span class="label label-info">已发布</span>');
                                    statusAction.html('<i class="fa fa-ban"></i>');
                                    statusAction.attr('data-original-title','隐藏');
                                }
                            }
                            if(status==3){//隐藏
                                var _status = statusEm.data('status');
                                if(parseInt(_status)!=1){
                                    statusEm.attr('data-status',3);
                                    statusEm.html('<span class="label label-danger">已隐藏</span>');
                                    statusAction.attr('data-original-title','恢复');
                                    statusAction.html('<i class="fa fa-history"></i>');
                                }
                            }
                            if(status==4){//删除
                                $("#mould-"+id).remove();
                            }
                        }
                    });
                }
            },
            error:function (error) {
                icModale(0, '系统错误，模块状态修改失败');
            }
        });
    }

    /**
     * 修改模块完成状态
     * @param ids 模块ID串
     * @param status 状态，2已完成
     */
    function updateMouldFinish(ids) {
        $.ajax({
            url:baseloaction +'/admin/course/mould/updateMouldFinishStatus',
            type:'post',
            dataType:'json',
            data:{'ids':ids},
            success:function (result) {
                if(result.success==false){
                    icModale(0, result.message);
                }else{
                    var arr = (ids+'').split(",");
                    $.each(arr,function (index,id) {
                        if($.trim(id)!=''){
                            var finishStatusEm = $("#finish-status-"+id);
                            finishStatusEm.html('<span class="label label-info">已完成</span>');
                            var finishAction = $("#finish-action-"+id);
                            finishAction.remove();
                        }
                    });
                }
            },
            error:function (error) {
                icModale(0, '系统错误，设置模块完成失败');
            }
        });
    }

    /**
     * 获取选中的ID串
     * @return {*}
     */
    function getIds() {
        var list = $('#mould-list-context input.i-checks:checked');
        if(list==null || list.length<=0){
            return null;
        }
        return list.map(function () {
            return this.value;
        }).get().join(',');
    }
});
